package com.linwen.javase.desgin_pattern.create.singleton;

/**
 * @ClassName SingletonL
 * @Description 懒汉式单例
 * @Author lin
 * @Date 2022/6/14 下午11:43
 * @Version V1.0
 */
public class SingletonL {
    private static volatile SingletonL singletonL = null; // 初始化为null，不立即创建;volatile 保证多线程可见性

    private SingletonL() {
    } // 同样不向外提供构造方法

    public SingletonL getSingletonL() {
        if (singletonL == null) {
            synchronized (SingletonL.class) { // 锁住当前对象
                if (singletonL == null) { // 双重检查，有可能在获取锁之后new之前让出锁
                    singletonL = new SingletonL();
                }
            }
        }
        return singletonL;
    }
}
